package model;

import java.util.TreeSet;
import datalayer.abstractFactory.DAOFactory;

public class Afdeling implements Comparable<Afdeling>{
	
	/*
	 * Variables
	 */
	private int idAfdeling;
	private String Naam;
//	private Iterator<Werknemer> iterator;
	private TreeSet<Werknemer> werknemerslijst = new TreeSet<Werknemer>();
	
	/*
	 * ArrayList vervangen door TreeSet.
	 * Het geen in de treeset gaat moet Comparable zijn.
	 */
	
	/*
	 * Construcor using fields
	 */
	public Afdeling(){
		werknemerslijst = DAOFactory.getFactory().getDAOWerknemer().loadAll();
	}
	
	public Afdeling(int afdelingId, String naam) {
		idAfdeling = afdelingId;
		Naam = naam;
	}
	
	/*
	 * Methodes
	 */
	
	@Override
	public int compareTo(Afdeling o) {
		int ngetal = Naam.compareTo(o.getNaam());
		
		if(ngetal == 0){
			if(idAfdeling == o.idAfdeling){
				return 0;
			}
			return ngetal;
		}
		
		return 0;
	}
	
	
	
	@Override
	public int hashCode() {
		return Naam.hashCode();
	}

	@Override
	public boolean equals(Object obj) {
		Afdeling a = (Afdeling)obj;
		if(Naam.equalsIgnoreCase(a.getNaam())){
			return true;
		}
		else{
			return false;
		}
	}

	/*
	 * Dit is op het moment niet nodig
	 */
	public boolean addWerknemer(Werknemer werknemer){
		DAOFactory.getFactory().getDAOWerknemer().insert(werknemer);
		return werknemerslijst.add(werknemer);
	}
	
	public TreeSet<Werknemer> getWerknemers(){
		
		return werknemerslijst;
	}
	
	public Werknemer getWerknemer(Werknemer werknemer){
		return DAOFactory.getFactory().getDAOWerknemer().load(werknemer);
	}
	
	public void updateWerknemer(Werknemer werknemer){
		DAOFactory.getFactory().getDAOWerknemer().update(werknemer);
	}
	
	@Override
	public String toString() {
		return "Afdeling [AfdelingId=" + idAfdeling + ", Naam=" + Naam + "]";
	}

	/*
	 * Getters / Setters
	 */
	public int getAfdelingId() {
		return idAfdeling;
	}

	public void setAfdelingId(int afdelingId) {
		idAfdeling = afdelingId;
	}

	public String getNaam() {
		return Naam;
	}

	public void setNaam(String naam) {
		Naam = naam;
	}
	
	public TreeSet<Werknemer> getWerknemerslijst() {
		return werknemerslijst;
	}

	public void setWerknemerslijst(TreeSet<Werknemer> werknemerslijst) {
		this.werknemerslijst = werknemerslijst;
	}
	
}
